import axios from "axios";

// 导入进来的是axios实例， 就是实例对象
console.log("----");

// Promise 类型
// new Promise<string>((resolve) => {
//   //在后面跟上类型时，这样就可以限制后面resolve，reject的参数
//   resolve("123");
// });

// // 1、get请求 (未配置之前)
// axios.get("http://123.207.32.32:8000/home/multidata").then((res) => {
//   console.log(res.data);
// });
// axios
//   .get("http://httpbin.org/get", {
//     params: {
//       //params: {} 应该是固定格式
//       name: "wang",
//       age: "18",
//     },
//   })
//   .then((res) => {
//     console.log(res.data);
//   });
// //   2、post请求
// axios
//   .post("http://httpbin.org/post", {
//     data: {
//       //params: {} 应该是固定格式
//       name: "WXG",
//       age: "18",
//     },
//   })
//   .then((res) => {
//     console.log(res.data);
//   });

// axios的配置选项
axios.defaults.baseURL = "http://httpbin.org";
axios.defaults.timeout = 3000;

// 1、get请求 (未配置之前)
axios.get("http://123.207.32.32:8000/home/multidata").then((res) => {
  console.log(res.data);
});
axios
  .get("/get", {
    params: {
      //params: {} 应该是固定格式
      name: "wang",
      age: "18",
    },
    timeout: 5000, //单独配置
  })
  .then((res) => {
    console.log(res.data);
  });

//   2、post请求
axios
  .post("/post", {
    data: {
      //params: {} 应该是固定格式
      name: "WXG",
      age: "18",
    },
  })
  .then((res) => {
    console.log(res.data);
  });

// 3、axios.all
axios
  .all([
    axios.get("/get", {
      params: {
        //params: {} 应该是固定格式
        name: "wang",
        age: "18",
      },
      timeout: 5000, //单独配置
    }),
    axios.post("/post", {
      data: {
        //params: {} 应该是固定格式
        name: "WXG",
        age: "28",
      },
    }),
  ])
  .then((res) => {
    console.log(res);
  });

// 4.axios的拦截器
// 拦截完后都要把参数返回出来
// fn1:请求发送成功(默认会把config参数传过来)，fn2：请求发送失败
// interceptors.request 拦截请求
// axios.interceptors.request.use(fn1(config), fn2);
axios.interceptors.request.use(
  (config) => {
    // 做操作
    console.log("请求成功的拦截");
    return config;
  },
  (err) => {
    console.log(err);
    return err;
  }
);
// interceptors.response 拦截响应
// fn1：数据响应成功（服务器正常返回了数据）
axios.interceptors.response.use(
  (res) => {
    return res;
  },
  (err) => {
    console.log(err);
    return err;
  }
);
